package JUC.第01章_前置知识;

import org.junit.Test;

public class G_初步讲解线程 {
    @Test
    private void 创建_就绪_阻塞_执行_死亡() {
        //新建
        Thread thread = new Thread(() -> {
            System.out.println(Thread.currentThread().getName());
        });

        thread.start();//就绪  会自动获取 cpu进入运行

        System.out.println(thread.isInterrupted());
//        thread.yield();//失去cpu执行权 进入就绪

        // （此线程不一定是当前线程，而是指调用该方法的Thread实例所代表的线程），
        // 但实际上只是给线程设置一个中断标志，线程仍会继续运行。
        thread.interrupt();//其作用是中断此线程

        try {
            thread.sleep(1000);//  睡眠阻塞    睡眠时间一到进入就绪
            //等待同步锁     获取同步锁
            new Thread().join();//阻塞  执行这个新的线程直到执行完毕 当前线程进入就绪
            thread.suspend();//过时了   挂起   会出现死锁
            thread.resume();//过时了    结束    挂起   进入就绪

            thread.wait();//阻塞
            thread.notify();//通知thread.wait   可以继续执行了  进入就绪
//            thread.notifyAll();//通知所有thread.wait   可以继续执行了   进入就绪
        } catch (InterruptedException e) {
            e.printStackTrace();
        }


        thread.stop();//过时了 线程主动死亡   run自己运行完   出现异常不处理
    }

}
